﻿using System;
using System.Collections.Generic;
using WowDotNetAPI.Models;
using WowDotNetAPI.Utilities;

namespace WowDotNetAPI
{
    public partial interface IExplorer : IDisposable
    {
        void GetCharacter(string realm, string name, Action<WebResultValue<Character>> callback);
        void GetCharacter(string realm, string name, CharacterOptions characterOptions, Action<WebResultValue<Character>> callback);

        void GetCharacter(Region region, string realm, string name, Action<WebResultValue<Character>> callback);
        void GetCharacter(Region region, string realm, string name, CharacterOptions characterOptions, Action<WebResultValue<Character>> callback);

        void GetGuild(string realm, string name, Action<WebResultValue<Guild>> callback);
        void GetGuild(string realm, string name, GuildOptions guildOptions, Action<WebResultValue<Guild>> callback);

        void GetGuild(Region region, string realm, string name, Action<WebResultValue<Guild>> callback);
        void GetGuild(Region region, string realm, string name, GuildOptions guildOptions, Action<WebResultValue<Guild>> callback);

        void GetRealms(Action<WebResultValue<IEnumerable<Realm>>> callback);
        void GetRealms(Region region, Action<WebResultValue<IEnumerable<Realm>>> callback);

        void GetAuctions(string realm, Action<WebResultValue<Auctions>> callback);

        void GetItem(string id, Action<WebResultValue<Item>> callback);

        void GetCharacterRaces(Action<WebResultValue<IEnumerable<CharacterRaceInfo>>> callback);
        void GetCharacterRaces(Region region, Action<WebResultValue<IEnumerable<CharacterRaceInfo>>> callback);
      
        void GetCharacterClasses(Action<WebResultValue<IEnumerable<CharacterClassInfo>>> callback);
        void GetCharacterClasses(Region region, Action<WebResultValue<IEnumerable<CharacterClassInfo>>> callback);
    
        void GetGuildRewards(Action<WebResultValue<IEnumerable<GuildRewardInfo>>> callback);
        void GetGuildRewards(Region region, Action<WebResultValue<IEnumerable<GuildRewardInfo>>> callback);

        void GetGuildPerks(Action<WebResultValue<IEnumerable<GuildPerkInfo>>> callback);
        void GetGuildPerks(Region region, Action<WebResultValue<IEnumerable<GuildPerkInfo>>> callback);
    }
}
